package com.jlrdb.controller;

import java.io.IOException;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.ServletInputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import jxl.Cell;
import jxl.JXLException;
import jxl.Sheet;
import jxl.Workbook;
import jxl.WorkbookSettings;

import com.jlrdb.model.AnalogRadioBroadcast;
import com.jlrdb.model.CellularBroadcast;
import com.jlrdb.model.DigitalRadioBroadcast;
import com.jlrdb.model.TvBroadcast;
import com.jlrdb.service.CellularBroadcastService;
import com.jlrdb.service.RadioBroadcastService;
import com.jlrdb.service.TvBroadcastService;

public class Upload extends HttpServlet {
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
		try
		{
			ServletInputStream is = request.getInputStream();
//			String type=request.getParameter("type");
//			System.out.println(type);
			byte[] junk = new byte[1024];
			int bytesRead = 0;
			// the first four lines are request junk
			bytesRead = is.readLine(junk, 0, junk.length);
			bytesRead = is.readLine(junk, 0, junk.length);
			bytesRead = is.readLine(junk, 0, junk.length);
			bytesRead = is.readLine(junk, 0, junk.length);
			WorkbookSettings workbooksetting = new WorkbookSettings();
			workbooksetting.setCellValidationDisabled(true);
			Workbook workbook = Workbook.getWorkbook(is);
			Sheet sheet = workbook.getSheet(0);
			int a = sheet.getColumns();
			int b = sheet.getRows();
			int result = 0;
			String name = sheet.getName();
			System.out.println(name);
//			if (name.equalsIgnoreCase("tv"))
//			{
//				TvBroadcastService tvBroadcastService = new TvBroadcastService();
//				for (int i = 1; i < b; i++)
//				{
//					TvBroadcast tvBroadcast = new TvBroadcast();
//					for (int j = 0; j < a; j++)
//					{
//						Cell a1 = sheet.getCell(j, i);
//						String content = a1.getContents();
//						if (content.length() > 499)
//							content = content.substring(0, 499);
//						if (j == 0)
//							tvBroadcast.setCountry(content);
//						if (j == 1)
//							tvBroadcast.setGeographic_Region(content);
//						if (j == 2)
//							tvBroadcast.setDtt_Standard(content);
//						if (j == 3)
//							tvBroadcast.setDtt_Status(content);
//						if (j == 4)
//							tvBroadcast.setAnalog_Standard(content);
//						if (j == 5)
//							tvBroadcast.setAso_Date_Start(content);
//						if (j == 6)
//							tvBroadcast.setAso_Date_Completion(content);
//						if (j == 7)
//							tvBroadcast.setAso_Status(content);
//						if (j == 8)
//							tvBroadcast.setDso_Date_Start(content);
//						if (j == 9)
//							tvBroadcast.setDso_Date_Completion(content);
//						if (j == 10)
//							tvBroadcast.setDso_Status(content);
//						if (j == 11)
//							tvBroadcast.setNext_Transition_Planned(content);
//						if (j == 12)
//							tvBroadcast.setStandard_Transition_Into(content);
//						if (j == 13)
//							tvBroadcast.setStatus(content);
//						if (j == 14)
//							tvBroadcast.setStart_Date(content);
//						if (j == 15)
//							tvBroadcast.setNotes(content);
//						if (j == 16)
//							tvBroadcast.setStatus_Confirmed(content);
//						if (j == 17)
//							tvBroadcast.setLast_Date_Verified(content);
//						if (j == 18)
//							tvBroadcast.setVideo_Format_Supported(content);
//						if (j == 19)
//							tvBroadcast.setOperators(content);
//						if (j == 20)
//							tvBroadcast.setMux_Details(content);
//						if (j == 21)
//							tvBroadcast.setDtt_Coverage(content);
//						if (j == 22)
//							tvBroadcast.setHd_Present(content);
//						if (j == 23)
//							tvBroadcast.setAudio_Formats(content);
//						if (j == 24)
//							tvBroadcast.setInteractive_Standards(content);
//						if (j == 25)
//							tvBroadcast.setFrequency_Bands(content);
//						if (j == 26)
//							tvBroadcast.setChannel_Bandwidth(content);
//						if (j == 27)
//							tvBroadcast.setCarrier_Type(content);
//						if (j == 28)
//							tvBroadcast.setModulation(content);
//						if (j == 29)
//							tvBroadcast.setBroadcast_Authority(content);
//						if (j == 30)
//							tvBroadcast.setItu_Region(content);
//						if (j == 31)
//							tvBroadcast.setBroadcasters(content);
//						if (j == 32)
//							tvBroadcast.setSource_Of_Reference(content);
//					}
//					tvBroadcast = tvBroadcastService.checkEmptyValues(tvBroadcast);
//					result = tvBroadcastService.addTvBroadcast(tvBroadcast);
//					result++;
//				}
//			} else if (name.equalsIgnoreCase("cellular"))
//			{
//				CellularBroadcastService cellularBroadcastService = new CellularBroadcastService();
//				String tempCountry = "";
//				String tempIndustry_Regulators = "";
//				String tempSource_Of_Reference = "";
//				String tempAditional_Contacts = "";
//				String tempNotes = "";
//				String tempProblems = "";
//				String tempMarket_Confirmation = "";
//				String tempOperators = "";
//				result=0;
//				for (int i = 1; i < b; i++)
//				{
//					CellularBroadcast cellularBroadcast = new CellularBroadcast();
//					for (int j = 0; j < a; j++)
//					{
//						Cell a1 = sheet.getCell(j, i);
//						String content = a1.getContents();
//						if (content.length() > 499)
//							content = content.substring(0, 499);
//						if (j == 0)
//						{
//							if (content.length() == 0)
//								content = tempCountry;
//							else
//								tempCountry = content;
//							cellularBroadcast.setCountry(content);
//						}
//						if (j == 1)
//							cellularBroadcast.setGeographic_Region(content);
//						if (j == 2)
//							cellularBroadcast.setCellular_Technology(content);
//						if (j == 3)
//							cellularBroadcast.setData_Enhancement_Technology(content);
//						if (j == 4)
//							cellularBroadcast.setInformation_Transfer_Rate(content);
//						if (j == 5)
//							cellularBroadcast.setStart_Date(content);
//						if (j == 6)
//							cellularBroadcast.setEnd_Date(content);
//						if (j == 7)
//							cellularBroadcast.setFrequency_Spectrum(content);
//						if (j == 8)
//							cellularBroadcast.setMarket_Penetration(content);
//						if (j == 9)
//						{
//							if (content.length() == 0)
//								content = tempOperators;
//							else
//								tempOperators = content;
//							cellularBroadcast.setOperators(content);
//						}
//						if (j == 10)
//						{
//							if (content.length() == 0)
//								content = tempSource_Of_Reference;
//							else
//								tempSource_Of_Reference = content;
//							cellularBroadcast.setSource_Of_Reference(content);
//						}
//						if (j == 11)
//						{
//							if (content.length() == 0)
//								content = tempAditional_Contacts;
//							else
//								tempAditional_Contacts = content;
//							cellularBroadcast.setAditional_Contacts(content);
//						}
//						if (j == 12)
//						{
//							if (content.length() == 0)
//								content = tempIndustry_Regulators;
//							else
//								tempIndustry_Regulators = content;
//							cellularBroadcast.setIndustry_Regulators(content);
//						}
//						if (j == 13)
//						{
//							if (content.length() == 0)
//								content = tempMarket_Confirmation;
//							else
//								tempMarket_Confirmation = content;
//							cellularBroadcast.setMarket_Confirmation(content);
//						}
//						if (j == 14)
//						{
//							if (content.length() == 0)
//								content = tempNotes;
//							else
//								tempNotes = content;
//							cellularBroadcast.setNotes(content);
//						}
//						if (j == 15)
//						{
//							if (content.length() == 0)
//								content = tempProblems;
//							else
//								tempProblems = content;
//							cellularBroadcast.setProblems(content);
//						}
//					}
//					cellularBroadcast = cellularBroadcastService.checkEmptyValues(cellularBroadcast);
//					result = cellularBroadcastService.addCellularBroadcast(cellularBroadcast);
//					result++;
//				}
//			} else if (name.equalsIgnoreCase("digitalRadio"))
//			{
//				RadioBroadcastService radioBroadcastService = new RadioBroadcastService();
//				String tempCountry = "";
//				String tempGeographic_Region = "";
//				String tempAnalog_radio = "";
//				String tempDigitization_Status = "";
//				String tempDigital_Radio_Family = "";
//				String tempStandard = "";
//				String tempTransmission_Status = "";
//				String tempCoverage = "";
//				String tempStart_Date = "";
//				String tempStop_date = "";
//				String tempNotes = "";
//				String tempFrequency_Spectrum = "";
//				String tempMajor_Players = "";
//				String tempDigital_Radio_Overall_coverage = "";
//				String tempMultiPlex = "";
//				String tempASO_Start_Date = "";
//				String tempASO_End_Date = "";
//				String tempRegulatory_authority = "";
//				String tempSource = "";
//				result=0;
//				for (int i = 1; i < b; i++)
//				{
//					DigitalRadioBroadcast digitalRadioBroadcast = new DigitalRadioBroadcast();
//					for (int j = 0; j < a; j++)
//					{
//						Cell a1 = sheet.getCell(j, i);
//						String content = a1.getContents().toString();
//						if (content.length() > 499)
//							content = content.substring(0, 499);
//						if (j == 0)
//						{
//							if (content.length() == 0)
//								content = tempCountry;
//							else
//								tempCountry = content;
//							digitalRadioBroadcast.setCountry(content);
//						}
//						if (j == 1)
//						{
//							if (content.length() == 0)
//								content = tempGeographic_Region;
//							else
//								tempGeographic_Region = content;
//							digitalRadioBroadcast.setGeographic_Region(content);
//						}
//						if (j == 2)
//						{
//							if (content.length() == 0)
//								content = tempAnalog_radio;
//							else
//								tempAnalog_radio = content;
//							digitalRadioBroadcast.setAnalog_radio(content);
//						}
//						if (j == 3)
//						{
//							if (content.length() == 0)
//								content = tempDigitization_Status;
//							else
//								tempDigitization_Status = content;
//							digitalRadioBroadcast.setDigitization_Status(content);
//						}
//						if (j == 4)
//						{
//							if (content.length() == 0)
//								content = tempDigital_Radio_Family;
//							else
//								tempDigital_Radio_Family = content;
//							digitalRadioBroadcast.setDigital_Radio_Family(content);
//						}
//						if (j == 5)
//						{
//							if (content.length() == 0)
//								content = tempStandard;
//							else
//								tempStandard = content;
//							digitalRadioBroadcast.setStandard(content);
//						}
//						if (j == 6)
//						{
//							if (content.length() == 0)
//								content = tempTransmission_Status;
//							else
//								tempTransmission_Status = content;
//							digitalRadioBroadcast.setTransmission_Status(content);
//						}
//						if (j == 7)
//						{
//							if (content.length() == 0)
//								content = tempCoverage;
//							else
//								tempCoverage = content;
//							digitalRadioBroadcast.setCoverage(content);
//						}
//						if (j == 8)
//						{
//							if (content.length() == 0)
//								content = tempStart_Date;
//							else
//								tempStart_Date = content;
//							digitalRadioBroadcast.setStart_Date(content);
//						}
//						if (j == 9)
//						{
//							if (content.length() == 0)
//								content = tempStop_date;
//							else
//								tempStop_date = content;
//							digitalRadioBroadcast.setStop_date(content);
//						}
//						if (j == 10)
//						{
//							if (content.length() == 0)
//								content = tempNotes;
//							else
//								tempNotes = content;
//							digitalRadioBroadcast.setNotes(content);
//						}
//						if (j == 11)
//						{
//							if (content.length() == 0)
//								content = tempFrequency_Spectrum;
//							else
//								tempFrequency_Spectrum = content;
//							digitalRadioBroadcast.setFrequency_Spectrum(content);
//						}
//						if (j == 12)
//						{
//							if (content.length() == 0)
//								content = tempMajor_Players;
//							else
//								tempMajor_Players = content;
//							digitalRadioBroadcast.setMajor_Players(content);
//						}
//						if (j == 13)
//						{
//							if (content.length() == 0)
//								content = tempDigital_Radio_Overall_coverage;
//							else
//								tempDigital_Radio_Overall_coverage = content;
//							digitalRadioBroadcast.setDigital_Radio_Overall_coverage(content);
//						}
//						if (j == 14)
//						{
//							if (content.length() == 0)
//								content = tempMultiPlex;
//							else
//								tempMultiPlex = content;
//							digitalRadioBroadcast.setMultiPlex(content);
//						}
//						if (j == 15)
//						{
//							if (content.length() == 0)
//								content = tempASO_Start_Date;
//							else
//								tempASO_Start_Date = content;
//							digitalRadioBroadcast.setASO_Start_Date(content);
//						}
//						if (j == 16)
//						{
//							if (content.length() == 0)
//								content = tempASO_End_Date;
//							else
//								tempASO_End_Date = content;
//							digitalRadioBroadcast.setASO_End_Date(content);
//						}
//						if (j == 17)
//						{
//							if (content.length() == 0)
//								content = tempRegulatory_authority;
//							else
//								tempRegulatory_authority = content;
//							digitalRadioBroadcast.setRegulatory_authority(content);
//						}
//						if (j == 18)
//						{
//							if (content.length() == 0)
//								content = tempSource;
//							else
//								tempSource = content;
//							digitalRadioBroadcast.setSource(content);
//						}
//						System.out.println(content);
//					}
//					digitalRadioBroadcast = radioBroadcastService.checkEmptyValuesDigital(digitalRadioBroadcast);
//					result = radioBroadcastService.addRadioBroadcastDigital(digitalRadioBroadcast);
//					result++;
//				}
//			} else if (name.equalsIgnoreCase("analogRadio"))
//			{
//				RadioBroadcastService radioBroadcastService = new RadioBroadcastService();
//				String tempCountry = "";
//				String tempGeographic_Region = "";
//				String tempMajor_Players = "";
//				String tempAm = "";
//				String tempFm = "";
//				String tempSource = "";
//				String tempNotes_Remarks = "";
//				result=0;
//				for (int i = 1; i < b; i++)
//				{
//					AnalogRadioBroadcast analogRadioBroadcast = new AnalogRadioBroadcast();
//					for (int j = 0; j < a; j++)
//					{
//						Cell a1 = sheet.getCell(j, i);
//						String content = a1.getContents();
//						if (content.length() > 499)
//							content = content.substring(0, 499);
//						if (j == 0)
//						{
//							if (content.length() == 0)
//								content = tempCountry;
//							else
//								tempCountry = content;
//							analogRadioBroadcast.setCountry(content);
//						}
//						if (j == 1)
//						{
//							if (content.length() == 0)
//								content = tempGeographic_Region;
//							else
//								tempGeographic_Region = content;
//							analogRadioBroadcast.setGeographic_Region(content);
//						}
//						if (j == 2)
//						{
//							if (content.length() == 0)
//								content = tempAm;
//							else
//								tempAm = content;
//							analogRadioBroadcast.setAm(content);
//						}
//						if (j == 3)
//						{
//							if (content.length() == 0)
//								content = tempFm;
//							else
//								tempFm = content;
//							analogRadioBroadcast.setFm(content);
//						}
//						if (j == 4)
//						{
//							if (content.length() == 0)
//								content = tempMajor_Players;
//							else
//								tempMajor_Players = content;
//							analogRadioBroadcast.setMajor_Players(content);
//						}
//						if (j == 5)
//						{
//							if (content.length() == 0)
//								content = tempNotes_Remarks;
//							else
//								tempNotes_Remarks = content;
//							analogRadioBroadcast.setNotes_Remarks(content);
//						}
//					}
//					analogRadioBroadcast = radioBroadcastService.checkEmptyValuesAnalog(analogRadioBroadcast);
//					result = radioBroadcastService.addRadioBroadcastAnalog(analogRadioBroadcast);
//					result++;
//				}
//			} else 
//			if (name.equalsIgnoreCase("temp"))
//			{
//				result=0;
//				for (int i = 1; i < b; i++)
//				{
//					for (int j = 0; j < a; j++)
//					{
//						System.out.println(sheet.getCell(j, i).getContents().length());
//					}
//				}
//			}
//			String message = "";
//			if (result > 0)
//				message = "Total " + result + "rows added.";
//			else
//				message = "Invalid sheet selected.";
//			request.setAttribute("message", message);
//			RequestDispatcher rd = request.getRequestDispatcher("jsp/message.jsp");
//			rd.forward(request, response);
		} catch (JXLException e)
		{
		}
	}
}